Networks and distributed storage allow data and storage space to be shared between devices located anywhere a connection is available. These implementations may range from a single machine offering a shared drive over a home network to an enterprise-class cloud storage array with multiple copies of data distributed throughout the world. Larger implementations may incorporate Network Attached Storage (NAS) devices, Storage Area Network (SAN) devices, and other configurations of storage elements and controllers in order to provide data and manage its flow. Improvements in distributed storage have given rise to a cycle where applications demand increasing amounts of data delivered with reduced latency, greater reliability, and greater throughput.
Conventional storage devices include caching technology to utilize faster cache memory rather than slower disk drive memory for input/output (IO) operations. As data is written to cache memory and cache memory fills up, cache flushing is used to migrate data from the cache memory to storage devices such as hard disk drives (HDDs) or solid state drives (SDDs). Traditional cache flushing algorithms designed for HDDs sort data stored in the cache memory in ascending order of HDD logical block addressing (LBA). LBA-based sorting is intended to minimize head seeks while performing I/O to the HDDs.
The traditional LBA-based sorting algorithm, however, is not as effective with improved storage technology, such as all-flash arrays and hybrid arrays with SSDs. This is because SSDs do not have mechanical read/write heads that seek to tracks to perform I/O. Rather, SSDs access media using memory offsets, which improves input/output operations per second (IOPS).
Therefore, in order to provide optimal caching performance with improved storage technology, a need exists for systems and techniques for cache flushing that make efficient use of the improved storage technology. In particular, systems and methods that optimize cache flushing for improved storage technology would provide a valuable improvement over conventional storage systems. Thus, while existing storage systems have been generally adequate, the techniques described herein provide improved performance and efficiency.